/**
 * 重置message，防止重复点击重复弹出message弹框
 * 如果在弹框关闭前，有新的弹框&&message一致，不弹
 * 这里只实现了Error的，其他情况可能有问题
 **/

import { ElMessage } from 'element-plus'

let messageInstance = null
// 上次提示信息，如果提示信息一致，则不提示
let lastMessage = ''
const resetMessage = (options) => {
  if (messageInstance) {
    messageInstance.close()
  }
  messageInstance = ElMessage(options)
}

;['error', 'success', 'info', 'warning'].forEach((type) => {
  resetMessage[type] = (options) => {
    if (options === undefined) options = ''
    if (typeof options === 'string') {
      options = {
        message: options,
        onClose: () => {
          lastMessage = ''
        },
      }
    }
    options.type = type
    if (options.message !== lastMessage) {
      lastMessage = options.message
      return resetMessage(options)
    }
  }
})
export default resetMessage
